PROGRAM Carga_Repuestos;

USES 
    CRT,DOS;


{$I DataTypes.pas}

{$I FileManagment.pas}


Procedure IngresarRepuestos();
Begin
  BEGIN
  CLRSCR;
  WRITELN ('----------- INGRESE DATOS AL ARCHIVO --------------');

  ASSIGN (DIREC,'Repuestos.dat');
  {$I-}
   RESET (DIREC);
  {$I+}
   IF IORESULT <> 0
      THEN REWRITE (DIREC)
      ELSE RESET (DIREC);

    WITH DATOS DO
    REPEAT
     WRITELN ('');
     WRITE ('Codigo del Repuesto__________:');
     READLN (Codigo);
     WRITE ('Descripcion del Repuesto_____:');
     READLN (Descripcion);
     WRITE ('Stock de ',CODIGO,' ____________:');
     READLN (Cantidad_Stoc);
     WRITELN;
     WRITE (DIREC,DATOS);
     WRITELN ('Si no desea seguir ingresando precione "N" ');
     RESPUESTA := UPCASE (READKEY)
     UNTIL RESPUESTA = 'N';
    CLOSE (DIREC);

{ IMPRIMIR LA LISTA COMPLETA}

    CLRSCR;
    WRITELN ('-------------- LISTA COMPLETA DEL ARCHIVO --------------');
    RESET (DIREC);
    WHILE NOT EOF(DIREC) DO
     BEGIN
      READ (DIREC,DATOS);
      WRITELN;
      WRITE ('Codigo del Repuesto _______:');
      WRITELN (DATOS.Codigo);
      WRITE ('Descripcion del Repuesto __:');
      WRITELN (DATOS.Descripcion);
      WRITE ('Cantidad de Stock _________:');
      WRITELN (DATOS.Cantidad_Stoc);

      READKEY
     END;
    CLOSE (DIREC);
    READLN;

END;  
End;


 VAR
     POS,A,MODI,MENU,COD:INTEGER;
     DIREC:ARCHIVO;
     DATOS:Repuestos;
     RESPUESTA:CHAR;
     PREG,BAJA,FIN:BOOLEAN;


 BEGIN
  REPEAT
  FIN:=FALSE;
  CLRSCR;
  WRITELN ('---------------------------  MENU PRINCIPAL ------------------------------------');
  WRITELN ('');
  WRITELN ('               1. INGRESAR DATOS AL ARCHIVO Repuestos.dat');
  WRITELN ('               2. DAR DE ALTA REPUESTOS AL ARCHIVO');
  WRITELN ('               3. MOSTRAR LA LISTA COMPLETA DE REPUESTOS CARGADOS');
  WRITELN ('               4. SALIR');
  WRITELN ('');
  WRITELN ('               " ESPACIO DEL DISCO ',DISKSIZE (3) DIV 10048576 ,' MEGABYTE "');
  WRITE ('ELECCION :');
  READLN (MENU);

  CASE MENU OF

1:IngresarRepuestos();
2:{DAR DE ALTA UN QUE}

  BEGIN
   CLRSCR;
   WRITELN ('---------- DAR DE ALTA AL ARCHIVO ---------------');
     ASSIGN (DIREC,'Repuestos.dat');
  {$I-}
   RESET (DIREC);
  {$I+}
   IF IORESULT <> 0
      THEN REWRITE (DIREC)
      ELSE RESET (DIREC);
   RESET (DIREC);
   SEEK (DIREC,(FILESIZE(DIREC)));  {PARA CREAR EN SU ULTIMA PARTE}
   WITH DATOS DO
    BEGIN
     WRITE ('Codigo del Repuesto__________:');
     READLN (Codigo);
     WRITE ('Descripcion del Repuesto_____:');
     READLN (Descripcion);
     WRITE ('Stock del Repuesto ',CODIGO,' ___:');
     READLN (Cantidad_Stoc);
     WRITE (DIREC,DATOS);
     END;
    CLOSE (DIREC);
    READLN;

{ IMPRIMIR LA LISTA  MODIFICADA}

   CLRSCR;
   WRITELN ('------------ LISTA CON NUEVO DATOS -------------');
   RESET (DIREC);
    WHILE NOT EOF(DIREC) DO
     BEGIN
      READ (DIREC,DATOS);
      WRITELN;
      WRITE ('Codigo del Repuesto ______:');
      WRITELN (DATOS.Codigo);
      WRITE ('Descripcion del Repuesto _:');
      WRITELN (DATOS.Descripcion);
      WRITE ('Stock del Repuesto _______:');
      WRITELN (DATOS.Cantidad_Stoc);

      READKEY
     END;
    CLOSE (DIREC);
    READLN;
  END;

 { MODIFICASION POR POSISION}


3:BEGIN
    CLRSCR;
    WRITELN ('-------------- LISTA COMPLETA DEL ARCHIVO --------------');
  ASSIGN (DIREC,'Repuestos.DAT');
  {$I-}
   RESET (DIREC);
  {$I+}
    WHILE NOT EOF(DIREC) DO
     BEGIN
      READ (DIREC,DATOS);
      WRITELN;
      WRITE ('Codigo del Repuesto ______:');
      WRITELN (DATOS.Codigo);
      WRITE ('Descripcion del Repuesto__:');
      WRITELN (DATOS.Descripcion);
      WRITE ('Stock del Repuesto _______:');
      WRITELN (DATOS.Cantidad_Stoc);
      READKEY
     END;
    CLOSE (DIREC);
    READLN;
  END;
{SALIDA FINAL}

4:BEGIN
  CLRSCR;
  WRITELN ('Usted esta saliendo del Programa.');
  READLN;
  FIN:=TRUE;
END;
END;
UNTIL FIN = TRUE;
END.
